package version1;

import java.io.IOException;
import java.io.InputStream;
import java.sql.*;
import java.util.Properties;

/* 版本1--封装
* Mysql工具类
* 1.数据库：地址，用户名，密码  私有属性--静态化【本类直接调用】
*    Oracle与Mysql同时具备--地址，用户名，密码
* 2.静态方法：【本类直接调用】getParam(String 路径)
*    目的：使用方法调用外部文件  db_mysql.properties
*    db_mysql.properties   对应  Java Properties类：读取键值对形式信息
*   Java Properties类 提供方法：   load 读取配置文件信息【键值对-数据库基本信息】
* 3.通过封装概念--连接成功数据据【通用一个类连接Mysql和Oracle】
*
* */
public class Mysql {
    //1.任何数据库具备：地址，用户名，密码----私有静态属性
    private static String url;
    private static String username;
    private static String password;
    //2.静态方法：getParam(String 路径)---连接数据库---读取信息
    //2.1 配置文件：键值对出现，保存数据库对应的基本信息   xxx.properties
    public static void getParam(String fileName) throws IOException {
        //2.2 Properties类--读取xxx.properties配置文件信息
        Properties p=new Properties();
        //2.3 外置文件读取----借助io流--搬运数据--InputStream
        //mYSQL.CLASS 表示当前那Mysql类的class对象
        //理解：图书馆--区域存Mysql相关书籍
        //getClassLoader() 获取当前类的加载器【加载器负责读取配置文件信息】
        //理解：图书馆--区域存Mysql相关书籍----图书管理员
        //getResourceAsStream(文件)  获取当前加载器中键值对信息
        //理解：图书馆--区域存Mysql相关书籍----图书管理员---找明确的书籍
        InputStream ins=
        Mysql.class.getClassLoader().getResourceAsStream(fileName);
        p.load(ins);
        //2.4 读取数据库基本信息【地址 用户 密码】赋值给当前对像【地址 用户 密码】
        //Properties类--读取db_mysql.properties中键
        url=p.getProperty("url");
        username=p.getProperty("username");
        password=p.getProperty("password");
        System.out.println("测试链接成功；"+url+username+password);
    }

    public static void main(String[] args) throws IOException, SQLException {
        //测试封装概念--连接成功数据库
        Mysql.getParam("db_mysql.properties");
        //练习：连接成功Mysql-----book表---增加一条记录
        //参考Mysql封装，写Oracle封装
        Connection con=DriverManager.getConnection(url,username,password);
        String sql="insert into book value(6,'余华','活着',121,'1997',70,'否')";
        String sql1="update book set price=17 where id=3";
        String sql2="delete from where id=5";
        String sql3="select * from book";
        Statement st=con.createStatement();
        //增删改
        int rows=st.executeUpdate(sql);
        System.out.println("修改后的表"+rows);
        //查数据
        ResultSet rs=st.executeQuery(sql3);
        while(rs.next()){
            String name=rs.getString("name");
            int id=rs.getInt("id");
            String date=rs.getString("date");
            System.out.println("书名"+name+id+date);
        }
        st.close();
        con.close();
    }
}
